﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using AnesSystem.Models;
using AnesSystem.ViewModels;
using AnesSystem.Services;
using Common;

namespace AnesSystem.Controls
{
    /// <summary>
    /// AnesMethodInputCtrl.xaml 的交互逻辑
    /// </summary>
    public partial class AnesMethodInputCtrl : BaseCustomCtrl
    {

        #region Variables
        private static List<ConfigVitalSignsModel> methodChangeList = new List<ConfigVitalSignsModel>();
        #endregion

        #region Constructor

        public AnesMethodInputCtrl()
        {
            InitializeComponent();
            InitVitalSigns();
            TextAlignment = TextAlignment.Left;
        }


        #endregion

        #region Properties

        #endregion

        #region 依赖属性

        #endregion

        #region Event

        #endregion

        #region Private Methods
        public TextAlignment TextAlignment
        {
            get { return _txtValue.TextAlignment; }
            set { _txtValue.TextAlignment = value; }
        }
        private void InitVitalSigns()
        {
            if (DataManager.Instance.Code2signs.ContainsKey("param_ETCO2"))
            {
                methodChangeList.Add(DataManager.Instance.Code2signs["param_ETCO2"]);
            }
            if (DataManager.Instance.Code2signs.ContainsKey("param_VT"))
            {
                methodChangeList.Add(DataManager.Instance.Code2signs["param_VT"]);
            }
            if (DataManager.Instance.Code2signs.ContainsKey("param_I:E"))
            {
                methodChangeList.Add(DataManager.Instance.Code2signs["param_I:E"]);
            }
            if (DataManager.Instance.Code2signs.ContainsKey("param_anes_PPEAK"))
            {
                methodChangeList.Add(DataManager.Instance.Code2signs["param_anes_PPEAK"]);
            }
            if (DataManager.Instance.Code2signs.ContainsKey("param_resp_ctrl"))
            {
                methodChangeList.Add(DataManager.Instance.Code2signs["param_resp_ctrl"]);
            }
        }
        #endregion

        #region Public/Protected Methods

        #endregion

        #region EventHandlers

        private void ChangeVitalISigns(string methodFullName)
        {
            if (methodFullName.Contains("气管插管") || methodFullName.Contains("复合麻醉"))
            {
                foreach (var item in methodChangeList)
                {
                    bool flag = false;
                    List<ConfigVitalSignsModel> list = DataManager.Instance.CurrentPatientLink.VitalSignShow.VitalSign;
                    foreach (var Item in list)
                    {
                        if (Item.code.Equals(item.code))
                        {
                            flag = true;
                        }
                    }
                    if (flag)
                    {
                        continue;
                    }
                    RealTimeSignsConfigCtrlViewModel.Instance.ChangSignLeftToRight(item);
                }
            }
            else
            {
                foreach (var item in methodChangeList)
                {
                    bool flag = true;
                    List<ConfigVitalSignsModel> list = DataManager.Instance.CurrentPatientLink.VitalSignShow.VitalSign;
                    foreach (var Item in list)
                    {
                        if (Item.code.Equals(item.code))
                        {
                            flag = false;
                        }
                    }
                    if (flag)
                    {
                        continue;
                    }
                    RealTimeSignsConfigCtrlViewModel.Instance.ChangSignRightToLeft(item);
                }
            }

        }

        public void ChangeXhFx(string methodFullName)
        {
            if (methodFullName.IndexOf("椎管内") > 0)
            {
                DataManager.Instance.CurrentPatientLink.AnesthesiaRecord.Fx_Xh_Text = "方向";
            }
            else
            {
                DataManager.Instance.CurrentPatientLink.AnesthesiaRecord.Fx_Xh_Text = "型号";
            }
        }

        private void ChangeOperInfoSzzj(string methodFullName)
        {
            if (methodFullName.Contains("复合"))
            {
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Qtjy))
                {
                    GetPatientLink().AnesthesiaRecord.Qtjy = "ST段分析 心率变异性分析";
                }
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Szzj))
                {

                    if (methodFullName.Contains("插管全麻+椎管内麻醉"))
                    {
                        GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后予面罩高流量吸氧，以镇静药、镇痛药、肌松药静脉全麻诱导，面罩辅助呼吸通畅，气管插管顺利，接麻醉呼吸机控制呼吸，各项呼吸参数在正常范围。手术顺利。术毕将患者转移到恢复室监护苏醒，等待患者自主呼吸、咽喉反射、肌力及意识恢复以后拔出气管导管，观察10分钟，患者神志清楚，能遵指令抬头、咳嗽、抬高肢体，生命体征在正常范围，送回病房。";
                    }
                    else if (methodFullName.Contains("插管全麻+神经阻滞"))
                    {
                        GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后予面罩高流量吸氧，以镇静药、镇痛药、肌松药静脉全麻诱导，面罩辅助呼吸通畅，气管插管顺利，接麻醉呼吸机控制呼吸，各项呼吸参数在正常范围。手术顺利。术毕将患者转移到恢复室监护苏醒，等待患者自主呼吸、咽喉反射、肌力及意识恢复以后拔出气管导管，观察10分钟，患者神志清楚，能遵指令抬头、咳嗽、抬高肢体，生命体征在正常范围，送回病房。";
                    }
                    else if (methodFullName.Contains("椎管内麻醉+非插管全麻"))
                    {
                        GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后进行CSEA麻醉。患者左侧卧位，屈髋屈膝头含胸，充分暴露腰背部，常规消毒铺无菌单，于L3 - L4棘突间隙以0.5 % 利多卡因注射液局部麻醉，用16号硬膜外穿刺针行硬膜外穿刺（正中法），待硬膜外穿刺针进入硬膜外腔之后，以5号Ⅱ型腰椎穿刺针轻轻进入蛛网膜下腔，见清亮脑脊液缓慢流出，遂注入腰麻药液，留置硬膜外导管3.5cm，及时调节麻醉上平面在T9水平。操作顺利，术区阻滞完善。手术顺利。离室时患者神志清楚，麻醉上平面在T10水平，拔出硬膜外导管后送患者回病房。";
                    }
                    else if (methodFullName.Contains("神经阻滞+非插管全麻"))
                    {
                        GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后在彩超引导下用20G动静脉留置针针芯穿刺行右臂丛神经阻滞麻醉，操作顺利，15分钟后术区阻滞完善。手术顺利。离室时患者神志清楚，测麻醉平面无全脊麻征象，生命体征在正常范围。";
                    }
                    else if (methodFullName.Contains("神经阻滞+椎管内麻醉"))
                    {
                        GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后进行CSEA麻醉。患者左侧卧位，屈髋屈膝头含胸，充分暴露腰背部，常规消毒铺无菌单，于L3 - L4棘突间隙以0.5 % 利多卡因注射液局部麻醉，用16号硬膜外穿刺针行硬膜外穿刺（正中法），待硬膜外穿刺针进入硬膜外腔之后，以5号Ⅱ型腰椎穿刺针轻轻进入蛛网膜下腔，见清亮脑脊液缓慢流出，遂注入腰麻药液，留置硬膜外导管3.5cm，及时调节麻醉上平面在T9水平。操作顺利，术区阻滞完善。手术顺利。离室时患者神志清楚，麻醉上平面在T10水平，拔出硬膜外导管后送患者回病房。";
                    }
                    else if (methodFullName.Contains("喉罩全麻+椎管内麻醉"))
                    {
                        GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后进行CSEA麻醉。患者左侧卧位，屈髋屈膝头含胸，充分暴露腰背部，常规消毒铺无菌单，于L3 - L4棘突间隙以0.5 % 利多卡因注射液局部麻醉，用16号硬膜外穿刺针行硬膜外穿刺（正中法），待硬膜外穿刺针进入硬膜外腔之后，以5号Ⅱ型腰椎穿刺针轻轻进入蛛网膜下腔，见清亮脑脊液缓慢流出，遂注入腰麻药液，留置硬膜外导管3.5cm，及时调节麻醉上平面在T9水平。操作顺利，术区阻滞完善。手术顺利。离室时患者神志清楚，麻醉上平面在T10水平，拔出硬膜外导管后送患者回病房。";
                    }
                    else if (methodFullName.Contains("喉罩全麻+神经阻滞"))
                    {
                        GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后在彩超引导下用20G动静脉留置针针芯穿刺行右臂丛神经阻滞麻醉，操作顺利，15分钟后术区阻滞完善。手术顺利。离室时患者神志清楚，测麻醉平面无全脊麻征象，生命体征在正常范围。";
                    }
                }

            }
            else if (methodFullName.Contains("局麻"))
            {

                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Qtjy))
                {
                    GetPatientLink().AnesthesiaRecord.Qtjy = "ST段分析 心率变异性分析";
                }
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Szzj))
                {
                    GetPatientLink().AnesthesiaRecord.Szzj = "";
                }

            }
            else if (methodFullName.Contains("椎管内"))
            {

                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Qtjy))
                {
                    GetPatientLink().AnesthesiaRecord.Qtjy = "ST段分析 心率变异性分析";

                }
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Szzj))
                {
                    GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后进行CSEA麻醉。患者左侧卧位，屈髋屈膝头含胸，充分暴露腰背部，常规消毒铺无菌单，于L3 - L4棘突间隙以0.5 % 利多卡因注射液局部麻醉，用16号硬膜外穿刺针行硬膜外穿刺（正中法），待硬膜外穿刺针进入硬膜外腔之后，以5号Ⅱ型腰椎穿刺针轻轻进入蛛网膜下腔，见清亮脑脊液缓慢流出，遂注入腰麻药液，留置硬膜外导管3.5cm，及时调节麻醉上平面在T9水平。操作顺利，术区阻滞完善。手术顺利。离室时患者神志清楚，麻醉上平面在T10水平，拔出硬膜外导管后送患者回病房。";

                }
            }
            else if (methodFullName.Contains("神经阻滞"))
            {
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Qtjy))
                {
                    GetPatientLink().AnesthesiaRecord.Qtjy = "ST段分析 心率变异性分析";

                }
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Szzj))
                {
                    GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后在彩超引导下用20G动静脉留置针针芯穿刺行右臂丛神经阻滞麻醉，操作顺利，15分钟后术区阻滞完善。手术顺利。离室时患者神志清楚，测麻醉平面无全脊麻征象，生命体征在正常范围。";

                }

            }
            else if (methodFullName.Contains("全麻"))
            {
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Qtjy))
                {
                    GetPatientLink().AnesthesiaRecord.Qtjy = "ST段分析 心率变异性分析 肺顺应性监测";

                }
                if (string.IsNullOrEmpty(GetPatientLink().AnesthesiaRecord.Szzj))
                {
                    GetPatientLink().AnesthesiaRecord.Szzj = "患者入室后，常规体温、心电监测，建立一组静脉通道，完成手术安全核对后予面罩高流量吸氧，以镇静药、镇痛药、肌松药静脉全麻诱导，面罩辅助呼吸通畅，气管插管顺利，接麻醉呼吸机控制呼吸，各项呼吸参数在正常范围。手术顺利。术毕将患者转移到恢复室监护苏醒，等待患者自主呼吸、咽喉反射、肌力及意识恢复以后拔出气管导管，观察10分钟，患者神志清楚，能遵指令抬头、咳嗽、抬高肢体，生命体征在正常范围，送回病房。";

                }
            }
            Save2DB();
        }

        private PatientLinkModel GetPatientLink()
        {
            return DataManager.Instance.CurrentPatientLink;
        } 
        private void Save2DB()
        {
            PatientLinkService.Instance.AddUpdate(DataManager.Instance.CurrentPatientLink);
        }

        #endregion

        private void _txtValue_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            AnesMethodsWin win = new AnesMethodsWin();
            win.ShowDialog();
            DataManager.Instance.IsNotNeedSaveData = false;
            if (HospitalConfig.Instance.CurrentHospital.HospitalCode.Equals(HospitalConfig.HOSPITAL_CODE_CQ_NTZYY))
            {
                if (DataManager.Instance.CurrentControl is BaseAnesRecordCtrl)
                {
                    ChangeVitalISigns(win.MethodFullName);
                    ChangeOperInfoSzzj(win.MethodFullName);
                }
            }
            if (HospitalConfig.Instance.CurrentHospital.HospitalCode.Equals(HospitalConfig.HOSPITAL_CODE_SC_CD_TYFSYY))
            {

                ChangeXhFx(win.MethodFullName);
            }
            Value = win.MethodFullName;
        }
    }
}
